
package com.x52im.rbchat.logic.main.loginimpl;

import android.app.Activity;

import com.eva.android.widget.ProgressDialogTimmer;
import com.x52im.rbchat.R;

/**
 * 登陆/连接IM服务器的进度提示对话框.
 */
public class OnLoginIMServerDialogProgress extends ProgressDialogTimmer
{
	private final static String TAG = OnLoginIMServerDialogProgress.class.getSimpleName();

	/** 登陆的超时间 */
	public final static int RETRY_DELAY = 6000;
//
//	private Handler handler = null;
//	private Runnable runnable = null;
//	// 重试时要通知的观察者
//	private Observer retryObsrver = null;
//
//	private AProgressDialog progressDialogForPairing = null;
//	private Activity parentActivity = null;
//
	private static OnLoginIMServerDialogProgress instance = null;
//
	public static OnLoginIMServerDialogProgress getInstance(Activity parentActivity) {
		if(instance == null || parentActivity == null)
			instance = new OnLoginIMServerDialogProgress(parentActivity);
		return instance;
	}

	private OnLoginIMServerDialogProgress(Activity parentActivity){
		super(parentActivity, parentActivity.getString(R.string.login_form_connect_chat_server), RETRY_DELAY);
	}

//
//	private OnLoginIMServerDialogProgress(Activity parentActivity)
//	{
//		this.parentActivity = parentActivity;
//		init();
//	}
//
//	private void init()
//	{
//		progressDialogForPairing = new AProgressDialog(parentActivity
//				, parentActivity.getString(R.string.login_form_connect_chat_server));
//		progressDialogForPairing.setTitle(R.string.general_connecting);
//		progressDialogForPairing.setCanceledOnTouchOutside(false);
//
//		handler = new Handler();
//		runnable = () -> {
//			if(retryObsrver != null)
//				retryObsrver.update(null, null);
//		};
//	}
//
//	/**
//	 * 显示进度提示对话框.
//	 *
//	 * @param show
//	 */
//	public void showProgressDialogForPairing(boolean show)
//	{
//		if(show)
//		{
//			// FIX:google分析记录过1次这种崩溃：BadTokenException (@LoginActivity$OnLoginDialogProgress:showProgressDialogForPairing:801) {main}
//			// 这种崩溃的原因可能是在进度条尝试显示的同时loginActivity因其它原因崩溃了！
//			try
//			{
//				// FIXBUG: google统计到IllegalStateException (@LoginActivity$OnLoginDialogProgress:showProgressDialogForPairing:809) {main}
//				//         错误，此if语句是为了保证延迟线程里不会因Activity已被关闭而此处却要非法地执行show的情况（此判断可趁为安全的show方法哦！）
//				if(parentActivity != null && !parentActivity.isFinishing())
//					progressDialogForPairing.show();
//				// 登陆进度显示时就开启一条延迟重试任务
//				handler.postDelayed(runnable, RETRY_DELAY);
//			}
//			catch (BadTokenException e)
//			{
//				Log.e(TAG, e.getMessage(), e);
//			}
//		}
//		else
//		{
//			// 无条件停掉延迟重试任务
//			handler.removeCallbacks(runnable);
//			retryObsrver = null;
//			// 此if语句是为了保证延迟线程里不会因Activity已被关闭而此处却要非法地执行show的情况（此判断可趁为安全的show方法哦！）
//			if(parentActivity != null && !parentActivity.isFinishing())
//				progressDialogForPairing.dismiss();
//
//			// 尝试清理对象引用，防止内存泄漏发生
//			tryClearForWeak();
//		}
//	}
//
//	public Observer getRetryObsrver()
//	{
//		return retryObsrver;
//	}
//	public void setRetryObsrver(Observer retryObsrver)
//	{
//		this.retryObsrver = retryObsrver;
//	}
//
//	/**
//	 * 尝试清理对象引用，防止内存泄漏发生。
//	 */
//	private void tryClearForWeak()
//	{
//		if(this.retryObsrver != null)
//			this.retryObsrver = null;
//		if(handler != null)
//			handler.removeCallbacks(runnable);
//		if(progressDialogForPairing != null)
//			progressDialogForPairing = null;// !
//		if(parentActivity != null)
//			this.parentActivity = null;
//	}
}